'''
Author: duliang thinktanker@163.com
Date: 2025-08-26 17:32:03
LastEditors: duliang thinktanker@163.com
LastEditTime: 2025-08-26 19:53:30
FilePath: \control-net\yolo\delete_emptytxt.py
Description: 
'''
import os


def delete_empty_txt_and_jpg(folder_path):
    """
    删除文件夹下txt大小为0的文件，以及对应相同文件名的jpg文件
    """
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        # 检查是否为txt文件
        if filename.endswith('.txt'):
            file_path = os.path.join(folder_path, filename)
            # 检查txt文件大小是否为0
            if os.path.getsize(file_path) == 0:
                # 删除空的txt文件
                os.remove(file_path)
                print(f"已删除空文件: {filename}")

                # 检查是否存在同名的jpg文件并删除
                jpg_filename = filename.replace('.txt', '.jpg')
                jpg_file_path = os.path.join(folder_path, jpg_filename)
                if os.path.exists(jpg_file_path):
                    os.remove(jpg_file_path)
                    print(f"已删除对应的jpg文件: {jpg_filename}")


# 删除没有与jpg文件名相同的txt文件的jpg文件
def delete_jpg_without_txt(folder_path):
    """
    删除没有对应txt文件的jpg文件
    """
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        # 检查是否为jpg文件
        if filename.endswith('.jpg'):
            jpg_file_path = os.path.join(folder_path, filename)
            # 检查是否存在同名的txt文件
            txt_filename = filename.replace('.jpg', '.txt')
            txt_file_path = os.path.join(folder_path, txt_filename)
            if not os.path.exists(txt_file_path):
                # 删除没有对应txt文件的jpg文件
                os.remove(jpg_file_path)
                print(f"已删除没有对应txt文件的jpg文件: {filename}")


# 删除没有对应jpg文件的txt文件
def delete_txt_without_jpg(folder_path):
    """
    删除没有对应jpg文件的txt文件
    """
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        # 检查是否为txt文件
        if filename.endswith('.txt') and filename != 'classes.txt':
            txt_file_path = os.path.join(folder_path, filename)
            # 检查是否存在同名的jpg文件
            jpg_filename = filename.replace('.txt', '.jpg')
            jpg_file_path = os.path.join(folder_path, jpg_filename)
            if not os.path.exists(jpg_file_path):
                # 删除没有对应jpg文件的txt文件
                os.remove(txt_file_path)
                print(f"已删除没有对应jpg文件的txt文件: {filename}")


# 使用示例
if __name__ == "__main__":
    folder_path = r"D:\results\labelimg"
    # folder_path = input("请输入文件夹路径: ")
    if os.path.exists(folder_path):
        delete_empty_txt_and_jpg(folder_path)
        delete_jpg_without_txt(folder_path)
        delete_txt_without_jpg(folder_path)
        print("处理完成!")
    else:
        print("文件夹路径不存在!")
